package com.bestcem.xm.user.service.dto.user;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;

/**
 * jwt用户信息, jwt加密使用
 *
 * @author wangyunyun <yunyun.wang@idiaoyan.com>
 * @version v1.0
 * @date 2022/3/1 14:30
 */
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AuthDTO {

    /**
     * 用户id
     */
    @JsonProperty("uid")
    @JSONField(name = "uid")
    private String userId;

    /**
     * 用户姓名
     */
    @JsonProperty("uname")
    @JSONField(name = "uname")
    private String realName;

    /**
     * 用户头像
     */
    @JsonProperty("avatar")
    @JSONField(name = "avatar")
    private String avatar;

    /**
     * 超级管理员权限
     */
    @JsonProperty("super")
    @JSONField(name = "super")
    private Integer superRole;

    /**
     * 用户公司id
     */
    @JsonProperty("org_id")
    @JSONField(name = "org_id")
    private String orgId;

    /**
     * 用户公司编码
     */
    @JsonProperty("org_code")
    @JSONField(name = "org_code")
    private String orgCode;

    /**
     * 用户公司名称
     */
    @JsonProperty("org_name")
    @JSONField(name = "org_name")
    private String orgName;

    /**
     * 用户公司套餐过期日期
     */
    @JsonProperty("org_exp")
    @JSONField(name = "org_exp")
    private String packageExpireTime;

    /**
     * 是否是高级管理员
     */
    @JsonProperty("is_senior")
    @JSONField(name = "is_senior")
    private Integer senior;


    /**
     * jwt的签发时间
     */
    private Long iat;

    /**
     * jwt过期时间
     */
    private Long exp;

    /**
     * jwt的签发者
     */
    private String iss;

    /**
     * 在该时间之前，该jwt都是不可用的
     */
    private Long nbf;

    /**
     * token版本
     */
    @JsonProperty("token_ver")
    @JSONField(name = "token_ver")
    private Long tokenVersion;


    /**
     * 分享id-bi: bi share token使用
     */
    @JsonProperty("share_id")
    @JSONField(name = "share_id")
    private String shareId;

    /**
     * 用户姓名: bi share token使用
     */
    @JsonProperty("u_name")
    @JSONField(name = "u_name")
    private String realNameForBiShare;

    /**
     * 过期日期: bi share token使用 48 * 60 * 60
     */
    @JsonProperty("timeout")
    @JSONField(name = "timeout")
    private String timeout;

    /**
     * 访问密码: bi share token使用
     */
    @JsonProperty("request_pwd")
    @JSONField(name = "request_pwd")
    private String requestPwd;

    /**
     * 是否是因分享数据看板创建的用户: bi share token使用
     */
    @JsonProperty("bi_share")
    @JSONField(name = "bi_share")
    private Boolean biShare;

}
